﻿using System;
using System.Collections.Generic;

namespace Lesson7_练习题
{

    #region 练习题三
    //一个Monster基类，Boss和Gablin继承自Monster
    //在怪物类的构造函数中，将其存储到一个怪物LIst中 
    //遍历列表可以让Boss和和Gablin分别攻击
    abstract class Monster
    {
        public static List<Monster> monsters = new List<Monster>();
        public Monster()  //构造函数
        {
            monsters.Add(this); //这行代码将当前类的实例添加到monsters集合中。
        }
        public abstract void Attack();
    }

    class Boss:Monster
    {
        public override void Attack()
        {
            Console.WriteLine("Boss攻击");
        }
    }

    class Gablin:Monster
    {
        public override void Attack()

        {
            
            Console.WriteLine("Gabulin攻击");
        }

       
    }
    #endregion
    internal class Program
    {
        static void Main(string[] args)
        {

            #region 比较ArrayList与List的区别
            // 他们都是c#为我们封装好的类
            //ArrayList是数组列表，List是链表
            //ArrayList可以存储任意类型的数据，List只能存储引用类型
            //ArrayList是一个内部object型的数组 而List是一个泛型数组
            #endregion

            #region 练习题二 
            //建立一个整形List 为其添加10 - Lesson8-Dictionary
            //删除List中第五个元素
            //遍历剩余元素并打印

            List<int> t = new List<int>();
            for(int  i  = 10;i>=1;i--)

            {
                t.Add(i);
            }
            t.RemoveAt(4);      //下标的索引是从0开始的，所以的这里的4指的是列表中的第五个元素
            foreach(int i in t)
            {
                Console.WriteLine(i);
            }

           
            #endregion
            Boss b = new Boss();

            Gablin gablin = new Gablin();

            Boss b1 = new Boss();

            Gablin gablin1 = new Gablin();


            for (int i = 0; i < Monster.monsters.Count; i++)

            {
                Monster.monsters[i].Attack();
            }
        }
    }
}
